import { createStore } from 'vuex'

export default createStore({
  // vuex 刷新应用的时候数据会丢失基于 LocalStorage 本地存储
  state: {
    // 用户选择的城市信息
    choseCityInfo: window.localStorage.getItem("cityinfo") ?
      JSON.parse(window.localStorage.getItem("cityinfo") as string) :
      {
        id: "440300",
        name: "广州"
      },
    _token: window.localStorage.getItem("_token") ?
      window.localStorage.getItem("_token") : ""
  },
  getters: {
  },
  mutations: {
    // 选择一个城市
    MSetChoseCity(state, cityInfo) {
      window.localStorage.setItem("cityinfo", JSON.stringify(cityInfo))
      state.choseCityInfo = cityInfo;
    },
    // 更新 token 信息
    updateToken(state, _token) {
      localStorage.setItem("_token", _token);
      state._token = _token;
    }
  },
  actions: {
    // 异步修改一个城市
    ASetChoseCity(context, cityInfo) {
      context.commit("MSetChoseCity", cityInfo)
    }
  },
  modules: {
  }
})
